/*******************************************************************************
 *                                    ZLG
 *                         ----------------------------
 *                         innovating embedded platform
 *
 * Copyright (c) 2001-present Guangzhou ZHIYUAN Electronics Co., Ltd.
 * All rights reserved.
 *
 * Contact information:
 * web site:    https://www.zlg.cn
 *******************************************************************************/
#ifndef __HPM6E00_OTP_H__
#define __HPM6E00_OTP_H__

#ifdef __cplusplus
extern "C" {
#endif  /* __cplusplus*/
#include "core/include/hpm6e00_regs_otp.h"
#include "core/include/hpm6e00_regs_pcfg.h"
#include "core/include/hpm6e00_clk.h"
#include "common/hpm_common.h"
#include "common/hpm_errno.h"
#include <stdint.h>
#include <stdio.h>

/* \brief OTP 最大字数量 */
#define OTP_WORDS_MAX         128

#define OTP_UNLOCK_MAGIC_NUM (0x4E45504FUL)
#define OTP_CMD_PROGRAM      (0x574F4C42UL) /* 写命令 */
#define OTP_CMD_READ         (0x44414552UL) /* 读命令*/

/**
 * \brief OTP 字读函数
 *
 * \param[in]  addr   读地址
 * \param[out] p_data 返回读到的数据
 *
 * \retval 成功返回 0
 */
int otp_word_read(uint32_t addr, uint32_t *p_data);
/**
 * \brief OTP 字编程函数
 *
 * \param[in] addr    写地址
 * \param[in] p_data  要写的字数据缓存
 * \param[in] n_words 字数量
 *
 * \retval 成功返回 0
 */
int otp_words_program(uint32_t addr, uint32_t *p_data, uint32_t n_words);
#ifdef __cplusplus
}
#endif  /* __cplusplus  */
#endif


